package com.taru.order.dao;


import com.taru.order.entity.Articl;
import com.taru.order.entity.Love;
import com.taru.order.entity.User;
import com.taru.order.util.DbUtil;

import com.taru.order.util.StringUtil;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class UserDaoimpl {
    /**
     * 用户注册
     */
    public int register(User user){
        String sql = "insert into tb_user(username,password,telphone,nickname,create_time) values (?,?,?,?,now())";
        int isn= DbUtil.update(sql,user.getUsername(),user.getPassword(),user.getTelphone(),user.getNickname());
        DbUtil.close();
        return isn;
    }
    /**
     * 用户登录
     */
    public User login(String username,String password){
        String sql="select * from tb_user r where r.username=? and r.password=?";
        List<Map<String, Object>> listMap=DbUtil.query(sql,username,password);
        User user=null;
        if(listMap!=null&&listMap.size()>0){
            Map<String,Object>map=listMap.get(0);
            user=new User();
            user.setUser_id(StringUtil.valueOf(map.get("user_id")));
            user.setUsername(StringUtil.valueOf(map.get("username")));
            user.setPassword(StringUtil.valueOf(map.get("password")));
            user.setNickname(StringUtil.valueOf(map.get("nickname")));
            user.setHeader(StringUtil.valueOf(map.get("password")));
            user.setTelphone(StringUtil.valueOf(map.get("telphone")));
            user.setIsLoved(StringUtil.valueOf(map.get("is_loved")));
            user.setCreate_time(StringUtil.valueOf(map.get("create_time")));
            user.setCollection_id(StringUtil.valueOf(map.get("collection_id")));
            user.setBrief(StringUtil.valueOf(map.get("brief")));
        }
        DbUtil.close();
        return user;
    }
    /**
     * 查询用户信息
     */
    public User userInfo(String user_id){
        String sql="select * from tb_user where user_id=?";
        List<Map<String, Object>> listMap=DbUtil.query(sql,user_id);
        User user=null;
        if(listMap!=null&&listMap.size()>0){
            Map<String,Object>map=listMap.get(0);
            user=new User();
            user.setUser_id(StringUtil.valueOf(map.get("user_id")));
            user.setUsername(StringUtil.valueOf(map.get("username")));
            user.setPassword(StringUtil.valueOf(map.get("password")));
            user.setNickname(StringUtil.valueOf(map.get("nickname")));
            user.setHeader(StringUtil.valueOf(map.get("header")));
            user.setTelphone(StringUtil.valueOf(map.get("telphone")));
            user.setIsLoved(StringUtil.valueOf(map.get("is_loved")));
            user.setCreate_time(StringUtil.valueOf(map.get("create_time")));
            user.setCollection_id(StringUtil.valueOf(map.get("collection_id")));
            user.setBrief(StringUtil.valueOf(map.get("brief")));

        }
        DbUtil.close();
        return user;
    }
    /**
     * 通过user_id修改用户信息
     */
    public int changeUser(User user){
        String sql ="update tb_user set header=?,nickname=? where user_id=?";
        int isn= DbUtil.update(sql,user.getHeader(),user.getNickname(),user.getUser_id());
        DbUtil.close();
        return isn;
    }

    /**
     * 添加简介
     */
    public int addBrief(String user_id,String brief){
        String sql ="update tb_user set brief=? where user_id=?";
        int isn= DbUtil.update(sql,brief,user_id);
        DbUtil.close();
        return isn;
    }

    /**
     * 用户收藏文章
     */
    public int collectArticl(String user_id,String articl_id){
        String sql1="insert into tb_collection(user_id,articl_id) values (?,?)";
        int code=DbUtil.update(sql1,user_id,articl_id);
        DbUtil.close();
        return code;
    }
    /**
     * 用户取消收藏文章
     */
    public int noCollectArticl(String user_id,String articl_id){
        String sql2="delete from tb_collection where user_id=? and articl_id=?";
        int code=DbUtil.update(sql2,user_id,articl_id);
        DbUtil.close();
        return code;
    }
    /**
     * 查询收藏文章
     */
    public List<Articl> selectCollect(String user_id){
        String sql = "select tb_articl.* from  tb_articl left outer join  tb_collection on tb_articl.articl_id=tb_collection.articl_id where tb_collection.user_id=? ";
        List<Map<String, Object>> listMap = DbUtil.query(sql,user_id);
        List<Articl> articls = new ArrayList<Articl>();
        if (listMap != null && listMap.size() > 0) {
            for (Map<String, Object> map : listMap) {
                Articl articl=new Articl();
                articl.setId(StringUtil.valueOf(map.get("articl_id")));
                articl.setId(StringUtil.valueOf(map.get("articl_code")));
                articl.setTitle(StringUtil.valueOf(map.get("title")));
                articl.setUserId(StringUtil.valueOf(map.get("user_id")));
                articl.setLogo(StringUtil.valueOf(map.get("logo")));
                articl.setCreateTime(StringUtil.valueOf(map.get("create_time")));
                articl.setModTime(StringUtil.valueOf(map.get("mod_time")));
                articl.setLikes((Integer) (map.get("likes")));
                articl.setContext(StringUtil.valueOf(map.get("context")));
                articl.setIsEnd(StringUtil.valueOf(map.get("isend")));
                articl.setIsPublish(StringUtil.valueOf(map.get("ispublish")));
                articl.setCateId(StringUtil.valueOf(map.get("cate_id")));
                articls.add(articl);
            }
        }
        return articls;
    }
    /**
     * 用户关注用户
     */
    public int attentionUser(String user_id,String love_user_id){
        String sql2 ="insert into tb_love(user_id,love_user_id) values (?,?)";
        int code=DbUtil.update(sql2,user_id,love_user_id);
        DbUtil.close();
        return code;
    }
    /**
     * 用户取消关注用户
     */
    public int noAttentionUser(String user_id,String love_user_id){
        String sql2="delete from tb_love where user_id=? and love_user_id=?";
        int code=DbUtil.update(sql2,user_id,love_user_id);
        DbUtil.close();
        return code;
    }
    /**
     * 查询关注的用户
     */
    public List<User> selectLove(String user_id){
        String sql = "select * from  tb_user left outer join  tb_love on tb_user.user_id=tb_love.love_user_id where tb_love.user_id=?";
        List<Map<String, Object>> listMap = DbUtil.query(sql,user_id);
        List<User> users = new ArrayList<User>();
        if (listMap != null && listMap.size() > 0) {
            for (Map<String, Object> map : listMap) {
                User user=new User();
                user.setUser_id(StringUtil.valueOf(map.get("user_id")));
                user.setUsername(StringUtil.valueOf(map.get("username")));
                user.setPassword(StringUtil.valueOf(map.get("password")));
                user.setBrief(StringUtil.valueOf(map.get("brief")));
                user.setCollection_id(StringUtil.valueOf(map.get("collection_id")));
                user.setCreate_time(StringUtil.valueOf(map.get("create_time")));
                user.setIsLoved(StringUtil.valueOf(map.get("is_loved")));
                user.setFans(StringUtil.valueOf(map.get("fans")));
                user.setHeader(StringUtil.valueOf(map.get("header")));
                user.setNickname(StringUtil.valueOf(map.get("nickname")));
                user.setTelphone(StringUtil.valueOf(map.get("telphone")));
                users.add(user);
            }
        }
        return users;
    }
    /**
     * 被关注时粉丝数量增加
     */
    public int fansNumber(String user_id){
        String sql="update tb_user set fans=fans+1 where user_id=?";
        int isn= DbUtil.update(sql,user_id);
        DbUtil.close();
        return isn;
    }
    /**
     * 被取消关注时粉丝数量减少
     */
    public int fansNumberLose(String user_id){
        String sql="update tb_user set fans=fans-1 where user_id=?";
        int isn= DbUtil.update(sql,user_id);
        DbUtil.close();
        return isn;
    }
    /**
     * 查询粉丝数量的用户
     */
    public List<User> selectLoveMax(String userId){
        String sql = "select * from tb_user order by fans desc";
        List<Map<String, Object>> listMap = DbUtil.query(sql);
        List<User> users = new ArrayList<User>();
        if (listMap != null && listMap.size() > 0) {
            for (Map<String, Object> map : listMap) {
                String uId=StringUtil.valueOf(map.get("user_id"));
                if(userId.equals(uId)){
                    continue;
                }
                User user=new User();
                user.setUser_id(uId);
                user.setUsername(StringUtil.valueOf(map.get("username")));
                user.setPassword(StringUtil.valueOf(map.get("password")));
                user.setBrief(StringUtil.valueOf(map.get("brief")));
                user.setCollection_id(StringUtil.valueOf(map.get("collection_id")));
                user.setCreate_time(StringUtil.valueOf(map.get("create_time")));
                user.setIsLoved(StringUtil.valueOf(map.get("is_loved")));
                user.setFans(StringUtil.valueOf(map.get("fans")));
                user.setHeader(StringUtil.valueOf(map.get("header")));
                user.setNickname(StringUtil.valueOf(map.get("nickname")));
                user.setTelphone(StringUtil.valueOf(map.get("telphone")));
                users.add(user);
            }
        }
        return users;
    }
    /**
     * 分页查询用户
     */
    public List<User> listUsers(Integer pageNum,Integer pageSize){
        String sql = "select * from tb_user  order by create_time desc limit ?,?";
        List<Map<String, Object>> listMap = DbUtil.query(sql,(pageNum-1)*pageSize,pageSize);
        List<User> users = new ArrayList<User>();
        if (listMap != null && listMap.size() > 0) {
            for (Map<String, Object> map : listMap) {
                User user=new User();
                user.setUser_id(StringUtil.valueOf(map.get("user_id")));
                user.setUsername(StringUtil.valueOf(map.get("username")));
                user.setPassword(StringUtil.valueOf(map.get("password")));
                user.setBrief(StringUtil.valueOf(map.get("brief")));
                user.setCreate_time(StringUtil.valueOf(map.get("create_time")));
                user.setIsLoved(StringUtil.valueOf(map.get("is_loved")));
                user.setFans(StringUtil.valueOf(map.get("fans")));
                user.setHeader(StringUtil.valueOf(map.get("header")));
                user.setNickname(StringUtil.valueOf(map.get("nickname")));
                user.setTelphone(StringUtil.valueOf(map.get("telphone")));
                user.setTelphone(StringUtil.valueOf(map.get("telphone")));
                users.add(user);
            }
        }
        return users;
    }
    /**
     * 总共多少条
     */
    public Long queryToral(){
        String sql="SELECT count(*) FROM `tb_user`";
        Long total=DbUtil.getTotalCount(sql);
        return total;
    }
    /**
     * 判断用户关注用户
     */
    public Love queryuserLike(Love love){
        String sql = "SELECT t.* FROM `tb_love` t where love_user_id=? and user_id=?";
        List<Map<String,Object>> list=DbUtil.query(sql,love.getLove_user_id(),love.getUser_id());
        Love love1=null;
        if (list != null && list.size() > 0) {
            Map<String,Object> map=list.get(0);
            love1=new Love();
            love1.setLove_id(StringUtil.valueOf(map.get("love_id")));
            love1.setLoveuser_id(StringUtil.valueOf(map.get("love_user_id")));
            love1.setUser_id(StringUtil.valueOf(map.get("user_id")));
        }
        return love1;
    }

}
